package com.seleniti.enpareja.controller.model.integration.database.domain;

public enum NotificationType {
	/**
	 * Reminds you have to take out food from the fridge
	 */
	UNFREEZE_FOOD(false, false, true, false),
	/**
	 * Reminds to make a home task now
	 */
	MAKE_HOMETASK(false, false, true, true),
	/**
	 * Informs your couple have changed the shopping list
	 */
	SHOPPING_LIST_CHANGED(true, true, false, false),
	/**
	 * Informs your couple have changed the home tasks list
	 */
	HOME_TASKS_CHANGED(true, true, false, false),
	/**
	 * Informs your couple have changed the meals list
	 */
	MEALS_CHANGED(true, true, false, false),
	/**
	 * Informs your couple have changed the work shifts list
	 */
	WORK_SHIFTS_CHANGED(true, true, false, false),
	/**
	 * Informs your couple have changed the shared expenses list
	 */
	SHARED_EXPENSES_CHANGED(true, true, false, false),
	/**
	 * Informs your couple have changed the store products list
	 */
	STORE_PRODUCTS_CHANGED(true, true, false, false),
	/**
	 * Informs your couple have left the garage
	 */
	GARAGE_IS_FREE_NOW(true, false, true, false),
	/**
	 * Informs to your couple have entered in the garage
	 */
	GARAGE_IS_OCCUPIED_NOW(true, false, true, false),
	/**
	 * Notification from your couple indicating he/she wants to know if the
	 * garage is free or not.
	 */
	ASKING_FOR_GARAGE(true, false, true, true),
	/**
	 * You got coupled
	 */
	GOT_COUPLED(false, false, false, false),
	/**
	 * Your couple broke up
	 */
	BROKE_UP(false, false, false, false), ;

	private final boolean unique;
	private final boolean changeNotification;
	private final boolean highPriority;
	private final boolean schedulable;

	private NotificationType(boolean unique, boolean changeNotification, boolean highPriority, boolean schedulable) {
		this.unique = unique;
		this.changeNotification = changeNotification;
		this.highPriority = highPriority;
		this.schedulable = schedulable;
	}

	public boolean isChangeNotification() {
		return changeNotification;
	}

	public boolean isUnique() {
		return unique;
	}

	public boolean isHighPriority() {
		return highPriority;
	}

	public boolean isSchedulable() {
		return schedulable;
	}
}
